﻿using System;

namespace SoftwareConsulting.BI11.NumericalMethods.Interpolation
{
    /// <summary>
    /// Класс интерполяции по Лагранжу
    /// </summary>
    /// <remarks>
    /// Полиномиальная интерполяция.
    /// Входные параметры:
    /// X   -   абсциссы точек;
    /// F   -   значения функций в этих точках;
    /// N   -   число точек;
    /// T   -   точка, в которой осуществляется интерполяция
    /// Выходные параметры:
    /// P   -   значение интерполяционного полинома в точке T
    /// DP  -   первая производная интерполяционного полинома в точке T (пока не реализовано)
    /// D2P -   вторая производная интерполяционного полинома в точке T (пока не реализовано)
    /// </remarks>
    public class LagrangeInterpolation 
    {
        private double _result = 0;

        /// <summary>
        /// Конструктор по умолчанию
        /// </summary>        
        public LagrangeInterpolation( double[] x, double[] f,int n, double t)
        {
            f = (double[])f.Clone();
            NevilleInterpolation neville = new NevilleInterpolation(x, f, n, t);
            _result = neville.GetSolution();
        }

        /// <summary>
        /// Возвращает решение
        /// </summary>        
        public double GetSolution()
        {
            return _result;
        }
    }
}
